<?php
/**
* DESCRIPCION:
* Pruebas para comprender el funcionamiento del Mapeador
* OBJETIVO:
* Crear un mapeador clasico e implementar todas sus funcionalidades
*
* @copyright  Creative Commons Atribución 2.5 Argentina.
* @author Iuga - iuga77@gmail.com
* @version 0.1.0
* @todo: ---
*/

echo '<h2>0)- Configuracion Inicial</h2>';
// 0)- Configuracion Inicial:
  // Debemos configurar algunas cosas, como el acceso a la BD
  // para esto, debemos abrir el archivo Mapeo/SConfig.class.php
  // En el contrusctor, estan las variables que podemos modificar

echo '<h2>1)- Linkeamos las clases necesarias</h2>';
// 1)- Linkeamos las clases necesarias
  require_once('ClienteMapper.class.php');
  require_once('Cliente.class.php');

echo '<h2>2)- Creamos un objeto Cliente de prueba</h2>';
// 2)- Creamos un objeto Cliente de prueba
  // Creamos un cliente ... no asentamos el legajo, ya que de eso se encarga
  // el autoincrement de la base de datos
  $c = new Cliente();
  $c->setNombre('Lelouch');
  $c->setApellido('Lamperouge');
  $c->setFechaDeNacimiento('2004-1-2');

echo '<h2>3)- Una vez que tenemos el cliente creamos el mappeador</h2>';
// 3)- Una vez que tenemos el cliente creamos el mappeador
   // NOTA: LA TABLA DEBE EXISTIR !!! (Creador de tablas planeado para la proxima verison)
   // En este ejemplo la tabla es muy simple:
   /*
        CREATE TABLE `test`.`cliente` (
          `id_cliente` INTEGER  NOT NULL AUTO_INCREMENT,
          `nombre` VARCHAR(50)  NOT NULL,
          `apellido` VARCHAR(50)  NOT NULL,
          `fec_nac` DATE  NOT NULL,
          PRIMARY KEY (`id_cliente`)
        )
        ENGINE = MyISAM;
    
    */
    $cmap = new ClienteMapper();
    // Con esto creamo el objeto que hace de interfaz entre el objeto cliente y la BD-R

echo '<h2>4)- Mandamos a guardar el objeto</h2>';
// 4)- Mandamos a guardar el objeto
    // Llamamos al mètodo Guardar
    // NOTA: Si el objeto tiene asignadad su PK, actualiza los registros y el objeto
    // Si no està asignado, crea la fila y el objeto
    if($cmap->Guardar($c))
    {
        echo 'El Objeto Cliente se guardo correctamente';
    }
    else
    {
        echo 'Se produjo un error - Revise el XML';
    }

    // Ahora vamos a verificar el nuevo legajo del cliente
    // Lo genero automaticamente la base de datos
    echo '<br>El legajo del cliente es: '.$c->getLegajo();

echo '<h2> 5)- Ahora vamos con las pruebas de carga ...</h2>';
//  5)- Ahora vamos con las pruebas de carga ...
    // Ups.. nos quedamos sin el objeto pero tenemos el legajo
    $leg = $c->getLegajo();
    $c= null;
    // Necesitamos los datos, los busquemos en la BD
    $c  = $cmap->Cargar($leg);
    // listo, nos aseguramos
    echo '<br>El nombre del Cliente es:'.$c->getApellido().', '.$c->getNombre();
    
echo '<h2> 6)- Nos equivocamos en la carga de los datos, lo modificamos</h2>';
// 6)- Nos equivocamos en la carga de los datos, lo modificamos
    $c->setFechaDeNacimiento('1985-6-11');
    if($cmap->Guardar($c))
    {
        echo 'El Objeto Cliente se Actualizo correctamente';
    }
    else
    {
        echo 'Se produjo un error - Revise el XML';
    }  
    
echo '<h2>7)- Creamos un nuevo cliente y lo guardamos</h2>';
// 7)- Creamos un nuevo cliente y lo guardamos
    $c2 = new Cliente();
    $c2->setNombre('Conan');
    $c2->setApellido('Edogawa');
    $c2->setFechaDeNacimiento('1988-4-7');
        if($cmap->Guardar($c2))
        {
            echo 'El Objeto Cliente se guardo correctamente';
        }
        else
        {
            echo 'Se produjo un error - Revise el XML';
        }
        
echo '<h2>8)- Obtenemos todos los clientes que tengamos</h2>';
// 8)- Obtenemos todos los clientes que tengamos
    // $todos pasa a ser un array de objetos cliente
    $todos = $cmap->ObtenerTodos();
    // Tambien podemos ordenarlo por algun campo de la BD
    $todos = $cmap->ObtenerTodos('nombre');
    // Y lo recorremos
    foreach($todos as $cl) 
    {
        echo '- '.$cl->getApellido().', '.$cl->getNombre().'<br>';
    }
    
echo '<h2> 9)- Por ultimo necesitamos hacer una busqueda de clientes</h2>';
// 9)- Por ultimo necesitamos hacer una busqueda de clientes
    // Buscamos los clientes que en el nombre tengan 'ch'
    $todos = $cmap->Filtrar("nombre LIKE '%ch%'");
    // Funciona igual a ObtenerTodos asi que lo podemos recorrer
    foreach($todos as $cl) 
    {
        echo '- '.$cl->getApellido().', '.$cl->getNombre().'<br>';
    }

echo '<h2> 10)- Como la prueba finalizó borramos los clientes de prueba</h2>';
// 10)- Como la prueba finalizó borramos los clientes de prueba
    $cmap->DarDeBaja($c);    
    $cmap->DarDeBaja($c2);    
?>
